水合
对此的最佳解答位于我们的 CLI 文档中:
什么是脱水和水合?
脱水及其对应概念水合,是一个工具,用于延迟加载那些如果主动获取可能会消耗大量资源的数据。
从开发者的角度来看,您只需关注脱水部分——Zapier 会处理水合的相关工作。
何时使用脱水?
在 Zapier 集成中使用脱水的两个最常见场景是:
-
需要从 API 获取额外信息(例如,资源的列表端点仅返回 ID,但需要根据每个 ID 单独获取内容)
-
需要提供对文件(或多个文件)的访问权限
为什么使用脱水?
主要原因是减少对 API 的负载,例如在上述情况 #1 中,Zapier 可以每 1-15 分钟为每个 Zap 获取一次已知资源的 ID 列表,而不是每次都获取每个资源的完整定义。将次要请求置于脱水指针后,只会执行一次该请求,尽管根据轮询周期,Zap 可能会反复遇到相同的记录。
脱水还能进一步节省文件传输的带宽。任何轮询触发器都不应在未使用脱水的情况下返回文件,否则您的应用每天可能向 Zapier 发送该文件 100-300 次。对于文件输出,实现脱水意味着文件只会在后续 Zap 步骤需要时才被访问和下载。
另一个原因是时间限制。您的集成在每次 Zap 步骤运行时有 30 秒来执行 API 调用和额外代码,否则步骤会超时。如果遇到时间限制,可以考虑将部分工作转移到脱水和水合机制上。
如何使用脱水?
请查看我们的 示例“files”应用,以了解文件脱水的实际应用,以及一个可运行的 Zapier 演示集成。您甚至可以通过在终端输入 zapier init . --template=files
来基于该仓库初始化一个 Zapier 应用,并在本地代码编辑器中查看。
水合在实际中的应用
关键文件包括 index.js
、hydrators.js
、triggers/newFile.js
和 creates/uploadFile.js
。
在构建集成时,您可能会从远程服务器获取文件信息。本示例集成则通过硬编码文件 URL 来演示。
New File
触发器返回这些文件 URL。方法 z.dehydrateFile
用于创建一个指向 downloadFile
函数的指针。为了在动作中将这些文件传递给其他应用,我们引用 hydrators.downloadFile
,这是一个基于文件 URL 的水合函数。
查看 hydrators.js
文件,您会看到 downloadFile
函数。该函数调用 z.stashFile
方法,返回一个 URL 文件指针。
所有这些组件将协同工作,仅在必要时延迟获取触发数据,从而避免在轮询或重复使用时进行不必要的 API 调用。
此应用的唯一动作是上传文件,基于 bundle.inputData.file
。
设置
首先,安装示例 Zapier 应用:运行 zapier init . --template=files
,然后使用 zapier push
将其推送到 Zapier。如果您是 CLI 新手,请先查看 教程。
在 Zapier 的开发者仪表板 中,此集成显示如下。如果愿意,您可以为其添加一个可选图标。
接下来,添加一个 Zap。打开 Zap 编辑器,并选择您的集成触发器。
继续操作——您会发现此应用无需身份验证,因为文件 URL 可以公开访问。选择 Test trigger
以查看拉取的三个示例 URL 及其水合指针。
现在,向 Zap 添加 Upload File
动作。通常,避免这种触发新文件并创建新文件的设置,因为它可能导致 Zap 循环。但这仅为测试目的——请确保在激活后及时关闭 Zap。
以上显示的字符串会提示 Zapier 执行水合操作。当 Zap 运行器遇到此类字符串时,Zapier 会使用适当参数调用定义的水合函数。
选择 Test step
后,您会在集成中的 Monitoring 标签 中看到三个新请求:
顶部的 POST 请求来自上传操作。GET 请求则从触发器提供的指针中检索文件。
现在,Zap 已准备好激活!
在此示例集成中,由于使用了硬编码的文件 URL,触发器不会自动运行。一旦您在触发器的 perform
函数中用从 API 返回的实际文件替换 fileURLs
,即可进行完整测试。
需要帮助?告诉我们您的问题,我们会为您连接合适的资源或支持团队。